#创建迭代器
'''
list=[1,2,3,4]
it = iter(list)     # 创建迭代器对象
print (next(it))    # 输出每个迭代器
print (next(it))
print (next(it))
'''

#使用for语句遍历：
'''
list=[1,2,3,4]
it = iter(list)     # 创建迭代器对象
for x in it:
    print (x, end=" ")
'''

#为末尾end传递一个空字符串，这样print函数不会在字符串末尾添加一个换行符，而是添加一个空字符串，其实这也是一个语法要求，表示这个语句没结束。


#使用next() 函数遍历
'''
import sys         # 引入 sys 模块
list=[1,2,3,4]
it = iter(list)     # 创建迭代器对象
while True:
    try:
        print (next(it))
    except StopIteration:
        sys.exit()
'''

#创建生成器
#range(0,10):创建0，到10的列表
#以x的平方值迭代
g = (x * x for x in range(0,10))
for x in g:
    print (x, end=" ")

#对应js语法
'''
let arr = ['a', 'b', 'c']
let iter = arr[Symbol.iterator]()

class RangeIterator {
    constructor(start, stop) {
        this.value = start
        this.stop = stop
    }

    [Symbol.iterator]() {
        return this
    }

    next() {
        var value = this.value
        if (value < this.stop) {
            this.value++
            return { done: false, value: value }
        }
        return { done: true, value: undefined }
    }
}

function range(start, stop) {
    return new RangeIterator(start, stop)
}
for (var value of range(0, 3)) {
    console.log(value) // 0, 1, 2
}
'''